// components/Tabs/Tabs.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    //要接受参数的属性名
    // aaa:{
      //参数的值类型
      // type: String,
      //接受过来参数的默认值
      // value: ""
    // }
    list:{
      type: Array,
      value: []
    }
  },

  attached(){
    console.log(this)
    this.setData({
      numberA:2
    })
  },

  /**
   * 组件的初始数据
   */
  data: {
    numberA:1
  },

  /**
   * 相当于vue中的监听属性
   */
  observers:{
    //监听test发生改变
    'numberA':function(e){
      console.log("test发生改变",e)
    }
  },

  
  /**
   * 组件的方法列表
   */
    //在组件中自定义的方法都要写到methods中, 而在页面中定义的方法 要写到data的同级下面
  methods: {
    changeA(){
      wx.bus.emit("changeA", "这里是模拟的data", "你好我是emit")
      this.setData({
        numberA: 100
      })
    },
    /**
     * 选项卡思路
     *  1.绑定点击事件
     *  2.获取被点击元素的索引
     *  3.拿到原始数组
     *  4.排他
     *    1.首先给循环中的每一个数组项的isActive都改为 false
     *    2.给当前索引 的isActive给成true就可以了
     */
    onItemClick(e){
      // console.log("item被点击了",e);
      let {activeId} = e.currentTarget.dataset;

      //触发父组件中的自定义事件, 向父组件传递数据
      // this.$emit
      this.triggerEvent("itemClick", {activeId})

      

      // let {list} = this.data;
      //微信小程序是不推荐直接修改data中的数据的
      //如果要使用data中的数据做操作的话, 我们需要对数据 进行深拷贝
      // let list = JSON.parse(JSON.stringify(this.data.list));
      // console.log("item被点击了",activeId);
      // list.forEach((item,index)=>{
        // 优化1: 将判断改为三元表达式再进行转换
        // item.isActive = item.id === activeId
        // if(item.id === activeId){
        //   item.isActive = true
        // }else{
        //   item.isActive = false
        // }
      // })
      //优化2. 使用箭头函数简写
      // list.forEach(item=>item.isActive = item.id === activeId)
      // this.setData({
        // list
      // })
    }
  }
})
